;SPLCOR.MAC;11 28-JUN-79 15:39:02 EDIT BY WEISSMAN ;SPLCOR.MAC;10 21-JUN-79 14:26:34 EDIT BY WEISSMAN ;SPLCOR.MAC;8 21-JUN-79 14:19:54 EDIT BY WEISSMAN ;SPLCOR.MAC;7 21-JUN-79 14:12:28 EDIT BY WEISSMAN ;SPLCOR.MAC;6 21-JUN-79 14:03:36 EDIT BY WEISSMAN ;SPLCOR.MAC;6 21-JUN-79 14:01:51 EDIT BY WEISSMAN ;SPLCOR.MAC;5 21-JUN-79 12:31:46 EDIT BY WEISSMAN ;SPLCOR.MAC;4 21-JUN-79 12:20:12 EDIT BY WEISSMAN ;SPLCOR.MAC;3 21-JUN-79 12:16:37 EDIT BY WEISSMAN ;SPLCOR.MAC;2 21-JUN-79 11:41:38 EDIT BY WEISSMAN TITLE SPLCOR SUBTTL AUSTIN HENDERSON, JUNE 1976 INTERN SPLCOR SEARCH XSTG INTERN .CORRECT EXTERN CONF .CORRECT: NOISE (spelling errors) CONFIRM TLNE Z,F1 ; "NO CORRECT"? TDZA A,A ; YES SETO A, ; NO MOVEM A,DOCORR RET ; Spelling corrector coded for the EXEC ;1/ pointer to typed string ;2/ pointer to table of correct entries ; wd 0: count of entries ; wd i: [bits,,routine],,[ASCIZ/string/] ; PUSHJ P,SPLCOR ;+1 always ; 1,2/ as on call ; 3/ index to entry chosen (0 implies no entry was close) ; ; saves all AC's. P=17 SPLCOR: MOVEM 17,SAVD17 ;save registers HRRZI 17,REGS BLT 17,REGS+16 MOVE 17,SAVD17 MOVEM 2,TBL SETZ 14, ;spread input string MOVEI 16,TCHARS SPLCR3: ILDB 15,1 JUMPE 15,SPLCR4 ADDI 14,1 ADDI 16,1 MOVEM 15,(16) JRST SPLCR3 SPLCR4: MOVEM 14,TCHARS MOVE 10,(2) ;count of entries in table SETZ 11, SETZM RES MOVEI 16,^D100 MOVEM 16,SLNGTH SETZM SCORE SPLCLP: SOJL 10,SPLCR1 ADDI 11,1 AOS 16,TBL ;location of entry MOVE 1,(16) ;entry ;eliminate non-applicable entry HLRZ 2,1 MOVE 2,(2) TLNE 2,INVIS JRST SPLCLP HRLI 1,440700 ;string pointer to correct string PUSHJ P,SPLSCR ;score string against this entry JRST SPLCLP ;not close CAMGE 1,SCORE ;1/score 2/length of entry string JRST SPLCLP ;score